package interview.prefix;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 2023.04.12-实习笔试-第一题-购物系统的降级策略 https://codefun2000.com/p/P1189
 */
public class InterfaceStrategy {

    /**
     * 思路：先将数组升序排序，然后扫描并记录前缀和，若前缀和 + 后面的全取nums[i] > cap，
     * 则最大值显然在nums[i-1]和nums[i]之间，因此后退一格将剩余容量均分即为最大值
     * 拿到序列的题，如果顺序不影响，可以先排个序再看有没有思路
     * @param args
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] ss = sc.nextLine().split(" ");
        int[] nums = new int[ss.length];
        for (int i = 0;i < ss.length;i++) {
            nums[i] = Integer.parseInt(ss[i]);//该转int数组就转，不省这个
        }
        Arrays.sort(nums);//升序排序
        int cap = Integer.parseInt(sc.nextLine());
        int curSum = 0;//到当前位置的总和
        for (int i = 0;i < nums.length;i++) {
            curSum += nums[i];
            //若以nums[i]为最大值，总和就大于cap，则要后退一格，将剩余容量均分求最大值
            if (curSum + nums[i] * (nums.length-1-i) > cap) {
                int result = (cap - (curSum-nums[i])) / (nums.length - i);
                System.out.println(result);
                return;//记得return
            }
        }
        System.out.println(-1);
    }
}
